package com.job.service;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.job.dao.CheckDao;
import com.job.pojo.Check;
import com.job.pojo.Count;
import com.job.pojo.Money;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;

@Service
public class CheckServiceImpl implements CheckService{

    //创建dao对象实例：
    @Autowired(required = false)
    CheckDao checkDao;



    //check页面中回显数据并按用户选择查询数据
    @Override
    public HashMap<String,Object> selectAll(Check check) {

        HashMap<String, Object>map=new HashMap<String, Object>();
        PageHelper.startPage(check.getPage(),check.getRow());
        List<Check>list =new ArrayList<>();

        //根据用户选择的查询条件选择使用哪种查询

        if(check.getType().equals(""))
        {
            if(check.getCondition().equals(""))
            {
                list=checkDao.selectAll();
            }else
            {
                if(check.getCondition().equals("员工ID"))
                {
                    //设置用户输入的查询条件
                    check.setUserId(check.getConValue());
                    list=checkDao.selectById(check);

                }else if(check.getCondition().equals("员工姓名"))
                {
                    check.setUserName(check.getConValue());
                    list=checkDao.selectByName(check);
                }else
                {
                    list=checkDao.selectAll();
                }
            }

        }else
        {
            if(check.getCondition().equals(""))
            {
                list=checkDao.selectByType(check);
            }else
            {
                if(check.getCondition().equals("员工ID"))
                {
                    //设置用户输入的查询条件
                    check.setUserId(check.getConValue());
                    list=checkDao.selectByTypeId(check);

                }else if (check.getCondition().equals("员工姓名"))
                {
                    check.setUserName(check.getConValue());
                    list=checkDao.selectByTypeName(check);
                }
            }
        }

        PageInfo<Check> page=new PageInfo<Check>(list);

        //取出分页对象中的值
        // 当前页集合
        map.put("list",page.getList());
        //总条数
        map.put("total",page.getTotal());
        //总页数
        map.put("totalPage",page.getPages());
        //上一页

        if(page.getPrePage()==0){
            map.put("pre",1);
        }else{
            map.put("pre",page.getPrePage());
        }

        //下一页
        //保持在最后一页
        if(page.getNextPage()==0){
            map.put("next",page.getPages());
        }else{
            map.put("next",page.getNextPage());
        }
        //当前页
        map.put("cur",page.getPageNum());
        return map;
    }



    //applay页面中回显个人数据并增加删除


    @Override
    public HashMap<String, Object> selectByName(Check check) {
        HashMap<String, Object>map=new HashMap<String, Object>();
        PageHelper.startPage(check.getPage(),check.getRow());
        List<Check>listName =new ArrayList<>();
        listName=checkDao.selectByName(check);
        PageInfo<Check> page=new PageInfo<Check>(listName);

        //取出分页对象中的值
        // 当前页集合
        map.put("list",page.getList());
        //总条数
        map.put("total",page.getTotal());
        //总页数
        map.put("totalPage",page.getPages());
        //上一页

        if(page.getPrePage()==0){
            map.put("pre",1);
        }else{
            map.put("pre",page.getPrePage());
        }

        //下一页
        //保持在最后一页
        if(page.getNextPage()==0){
            map.put("next",page.getPages());
        }else{
            map.put("next",page.getNextPage());
        }
        //当前页
        map.put("cur",page.getPageNum());
        return map;
    }

    //添加申请信息
    @Override
    public String apply(Check check) {
        int n=checkDao.apply(check);
        if(n>0)
        {
            return "成功";
        }return "失败";
    }




    //bing图
    public HashMap<String, Object> bing(Check check) {
         HashMap<String, Object> map = new HashMap<String, Object>();

        List<HashMap<String, Object>> mapList = new ArrayList();
       String types[]={"请假","调休","迟到","旷工","加班","出差"};
        int count=0;
       for(int i=0;i<6;i++)
       {
           HashMap<String, Object> m = new HashMap();
           check.setType(types[i]);
           count=checkDao.selectCount(check);
           m.put("value",count);
           m.put("name",types[i]);
           mapList.add(m);
       }


        map.put("info", mapList);
        return map;
    }

    public List<Check> selectTime() {
        return checkDao.selectTime();
    }



    //查询工资
    @Override
    public HashMap<String, Object> selectMoney(Money money) {
        HashMap<String, Object>map=new HashMap<String, Object>();
        PageHelper.startPage(money.getPage(),money.getRow());
        List<Money>listName =new ArrayList<>();

            listName = checkDao.selectMyMoney(money);


        PageInfo<Money> page=new PageInfo<Money>(listName);

        //取出分页对象中的值
        // 当前页集合
        map.put("list",page.getList());
        //总条数
        map.put("total",page.getTotal());
        //总页数
        map.put("totalPage",page.getPages());
        //上一页

        if(page.getPrePage()==0){
            map.put("pre",1);
        }else{
            map.put("pre",page.getPrePage());
        }

        //下一页
        //保持在最后一页
        if(page.getNextPage()==0){
            map.put("next",page.getPages());
        }else{
            map.put("next",page.getNextPage());
        }
        //当前页
        map.put("cur",page.getPageNum());
        return map;
    }

    @Override
    public HashMap<String, Object> selectAllMoney(Money money) {
        HashMap<String, Object>map=new HashMap<String, Object>();
        PageHelper.startPage(money.getPage(),money.getRow());
        List<Money>listName =new ArrayList<>();

        listName = checkDao.selectAllMoney(money);


        PageInfo<Money> page=new PageInfo<Money>(listName);

        //取出分页对象中的值
        // 当前页集合
        map.put("list",page.getList());
        //总条数
        map.put("total",page.getTotal());
        //总页数
        map.put("totalPage",page.getPages());
        //上一页

        if(page.getPrePage()==0){
            map.put("pre",1);
        }else{
            map.put("pre",page.getPrePage());
        }

        //下一页
        //保持在最后一页
        if(page.getNextPage()==0){
            map.put("next",page.getPages());
        }else{
            map.put("next",page.getNextPage());
        }
        //当前页
        map.put("cur",page.getPageNum());
        return map;
    }


  //修改工资：
    @Override
    public String updateMoney(Money money) {

        int total=money.getBasicMoney()+money.getMeritMoney()+money.getAddMoney()-money.getPunishMoney();
        money.setTotalMoney(total);

        int n=checkDao.updateMoney(money);
        if(n>0)
        {
            return "成功";
        }return "失败";
    }


  //统计奖金/罚款最高
  @Override
  public HashMap<String, Object> count(Money money)
  {
      HashMap<String, Object>map=new HashMap<String, Object>();

      List<Money>listName =new ArrayList<>();


         if(money.getIsAdd().equals("true"))
         {
             listName = checkDao.countAdd(money);
         }else
      {
         listName=checkDao.countPunish(money);
      }




      map.put("list",listName);

      return map;
  }


  //删除工资
    @Override
    public String delUser(Money money) {
        int n=checkDao.delUser(money);
        if(n>0)
        {
            return "删除成功";
        }else {
            return "删除失败";
        }
    }

    //增加工资条：
    @Override
    public String add(Money money) {

        //计算总工资：
        int total=money.getBasicMoney()+money.getMeritMoney()+money.getAddMoney()-money.getPunishMoney();
        money.setTotalMoney(total);

        int n=checkDao.add(money);
        if(n>0)
        {
            return "成功";
        }return "失败";
    }
}
